<!doctype html>
<html lang="en" class="no-js">
  <head>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="generator" content="Hugo 0.73.0-DEV" />

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">



<link rel="shortcut icon" href="/favicons/favicon.ico" >
<link rel="apple-touch-icon" href="/kustomize/favicons/apple-touch-icon-180x180.png" sizes="180x180">
<link rel="icon" type="image/png" href="/kustomize/favicons/favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="/kustomize/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-36x36.png" sizes="36x36">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-48x48.png" sizes="48x48">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-72x72.png" sizes="72x72">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-144x144.png" sizes="144x144">
<link rel="icon" type="image/png" href="/kustomize/favicons/android-192x192.png" sizes="192x192">

<title>Builtin Plugins | Kustomize</title><meta property="og:title" content="Builtin Plugins" />
<meta property="og:description" content="Builtin Plugins
" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://kubernetes-sigs.github.io/kustomize/guides/plugins/builtins/" />
<meta property="article:modified_time" content="2020-07-16T12:57:18-07:00" /><meta property="og:site_name" content="Kustomize" />
<meta itemprop="name" content="Builtin Plugins">
<meta itemprop="description" content="Builtin Plugins
">
<meta itemprop="dateModified" content="2020-07-16T12:57:18-07:00" />
<meta itemprop="wordCount" content="1560">



<meta itemprop="keywords" content="" /><meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Builtin Plugins"/>
<meta name="twitter:description" content="Builtin Plugins
"/>





<link rel="preload" href="/kustomize/scss/main.min.818a933df0186c907f1faea6730835dd5fa01c3b53af36bb68396dc80a2d3c45.css" as="style">
<link href="/kustomize/scss/main.min.818a933df0186c907f1faea6730835dd5fa01c3b53af36bb68396dc80a2d3c45.css" rel="stylesheet" integrity="">


<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>



<link rel="stylesheet" type="text/css" href="https://kubernetes-sigs.github.io/kustomize//css/asciinema-player.css" />

    <title>Builtin Plugins | Kustomize</title>
  </head>
  <body class="td-page">
    <header>
      
<nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar">
        <a class="navbar-brand" href="/kustomize/">
		<span class="navbar-logo"></span><span class="text-uppercase font-weight-bold">Kustomize</span>
	</a>
	<div class="td-navbar-nav-scroll ml-md-auto" id="main_navbar">
		<ul class="navbar-nav mt-2 mt-lg-0">
			
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link" href="/kustomize/installation/" ><span>Installation</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link active" href="/kustomize/guides/" ><span class="active">Guides</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link" href="/kustomize/api-reference/" ><span>API Reference</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				<a class="nav-link" href="https://github.com/kubernetes-sigs/kustomize/tree/master/examples" target="_blank" ><span>Example</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link" href="/kustomize/faq/" ><span>FAQ</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link" href="/kustomize/blog/" ><span>Blog</span></a>
			</li>
			
			<li class="nav-item mr-4 mb-2 mb-lg-0">
				
				
				
				
				
				
				<a class="nav-link" href="/kustomize/contributing/" ><span>Contributing</span></a>
			</li>
			
			
			
			<li class="nav-item dropdown d-none d-lg-block">
				

<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
	English
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
	
	<a class="dropdown-item" href="/kustomize/zh/guides/plugins/builtins/">简体中文</a>
	
</div>
			</li>
			
		</ul>
	</div>
	<div class="navbar-nav d-none d-lg-block">
</div>
</nav>

    </header>
    <div class="container-fluid td-outer">
      <div class="td-main">
        <div class="row flex-xl-nowrap">
          <div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none">
            




<div id="td-sidebar-menu" class="td-sidebar__inner">
  
  <form class="td-sidebar__search d-flex align-items-center">
    

    <button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type="button" data-toggle="collapse" data-target="#td-section-nav" aria-controls="td-docs-nav" aria-expanded="false" aria-label="Toggle section navigation">
    </button>
  </form>
  
  <nav class="collapse td-sidebar-nav pt-2 pl-4" id="td-section-nav">
    
    <div class="nav-item dropdown d-block d-lg-none">
      

<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
	English
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
	
	<a class="dropdown-item" href="/kustomize/zh/guides/plugins/builtins/">简体中文</a>
	
</div>
    </div>
    
    






<ul class="td-sidebar-nav__section pr-md-3">
  <li class="td-sidebar-nav__section-title">
    <a  href="/kustomize/guides/" class="align-left pl-0 pr-2 td-sidebar-link td-sidebar-link__section">Guides</a>
  </li>
  <ul>
    <li class="collapse show" id="kustomizeguides">
      
      
      
      
      






<ul class="td-sidebar-nav__section pr-md-3">
  <li class="td-sidebar-nav__section-title">
    <a  href="/kustomize/guides/bespoke/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Bespoke Application</a>
  </li>
  <ul>
    <li class="collapse " id="kustomizeguidesbespoke">
      
      
      
    </li>
  </ul>
</ul>

      
      
      
      






<ul class="td-sidebar-nav__section pr-md-3">
  <li class="td-sidebar-nav__section-title">
    <a  href="/kustomize/guides/offtheshelf/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Off The Shelf Application</a>
  </li>
  <ul>
    <li class="collapse " id="kustomizeguidesofftheshelf">
      
      
      
    </li>
  </ul>
</ul>

      
      
      
      






<ul class="td-sidebar-nav__section pr-md-3">
  <li class="td-sidebar-nav__section-title">
    <a  href="/kustomize/guides/plugins/" class="align-left pl-0 pr-2 active td-sidebar-link td-sidebar-link__section">Kustomize Plugins</a>
  </li>
  <ul>
    <li class="collapse show" id="kustomizeguidesplugins">
      
      
      
      
      
      
      <a class="td-sidebar-link td-sidebar-link__page  active" id="m-kustomizeguidespluginsbuiltins" href="/kustomize/guides/plugins/builtins/">Builtin Plugins</a>
      
      
      
      
      
      <a class="td-sidebar-link td-sidebar-link__page " id="m-kustomizeguidespluginsexecpluginguidedexample" href="/kustomize/guides/plugins/execpluginguidedexample/">Exec plugin on linux</a>
      
      
      
      
      
      <a class="td-sidebar-link td-sidebar-link__page " id="m-kustomizeguidespluginsgoplugincaveats" href="/kustomize/guides/plugins/goplugincaveats/">Go plugin Caveats</a>
      
      
      
      
      
      <a class="td-sidebar-link td-sidebar-link__page " id="m-kustomizeguidespluginsgopluginguidedexample" href="/kustomize/guides/plugins/gopluginguidedexample/">Go plugin example</a>
      
      
    </li>
  </ul>
</ul>

      
      
      
      






<ul class="td-sidebar-nav__section pr-md-3">
  <li class="td-sidebar-nav__section-title">
    <a  href="/kustomize/guides/components/" class="align-left pl-0 pr-2 collapsed td-sidebar-link td-sidebar-link__section">Kustomize Components</a>
  </li>
  <ul>
    <li class="collapse " id="kustomizeguidescomponents">
      
      
      
    </li>
  </ul>
</ul>

      
      
    </li>
  </ul>
</ul>

  </nav>
</div>




          </div>
          <div class="d-none d-xl-block col-xl-2 td-toc d-print-none">
            






<div class="td-page-meta ml-2 pb-1 pt-2 mb-0">





<a href="https://github.com/kubernetes-sigs/kustomize/edit/master/site/content/en/guides/plugins/builtins.md" target="_blank"><i class="fa fa-edit fa-fw"></i> Edit this page</a>
<a href="https://github.com/kubernetes-sigs/kustomize/issues/new?title=Builtin%20Plugins" target="_blank"><i class="fab fa-github fa-fw"></i> Create documentation issue</a>


<a href="https://github.com/kubernetes-sigs/kustomize/issues/new" target="_blank"><i class="fas fa-tasks fa-fw"></i> Create project issue</a>

</div>






<nav id="TableOfContents">
  <ul>
    <li><a href="#_annotationtransformer_"><em>AnnotationTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_configmapgenerator_"><em>ConfigMapGenerator</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-1">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-1">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_imagetagtransformer_"><em>ImageTagTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-2">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-2">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_labeltransformer_"><em>LabelTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-3">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-3">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_namespacetransformer_"><em>NamespaceTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-4">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-4">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_patchesjson6902_"><em>PatchesJson6902</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-5">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-5">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_patchesstrategicmerge_"><em>PatchesStrategicMerge</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-6">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-6">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_patchtransformer_"><em>PatchTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-7">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-7">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_prefixsuffixtransformer_"><em>PrefixSuffixTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-8">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-8">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_replicacounttransformer_"><em>ReplicaCountTransformer</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-9">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-9">Usage via plugin</a></li>
      </ul>
    </li>
    <li><a href="#_secretgenerator_"><em>SecretGenerator</em></a>
      <ul>
        <li><a href="#usage-via-kustomizationyaml-10">Usage via <code>kustomization.yaml</code></a></li>
        <li><a href="#usage-via-plugin-10">Usage via plugin</a></li>
      </ul>
    </li>
  </ul>
</nav>



          </div>
          <main class="col-12 col-md-9 col-xl-8 pl-md-5" role="main">
            
  

            <nav aria-label="breadcrumb" class="d-none d-md-block d-print-none">
	<ol class="breadcrumb spb-1">
		










<li class="breadcrumb-item" >
	<a href="https://kubernetes-sigs.github.io/kustomize/guides/">Guides</a>
</li>




<li class="breadcrumb-item" >
	<a href="https://kubernetes-sigs.github.io/kustomize/guides/plugins/">Kustomize Plugins</a>
</li>




<li class="breadcrumb-item active" aria-current="page">
	<a href="https://kubernetes-sigs.github.io/kustomize/guides/plugins/builtins/">Builtin Plugins</a>
</li>

	</ol>
</nav	>

            
<div class="td-content">
	<h1>Builtin Plugins</h1>
	<div class="lead">Builtin Plugins</div>
	<h1 id="builtin-plugins">Builtin Plugins</h1>
<p>A list of kustomize&rsquo;s builtin plugins - both
generators and transformers.</p>
<p>For each plugin, an example is given for</p>
<ul>
<li>
<p>implicitly triggering
the plugin via a dedicated kustomization
file field (e.g. the <code>AnnotationsTransformer</code> is
triggered by the <code>commonAnnotations</code> field).</p>
</li>
<li>
<p>explicitly triggering the plugin
via the <code>generators</code> or <code>transformers</code> field
(by providing a config file specifying the
plugin).</p>
</li>
</ul>
<p>The former method is convenient but limited in
power as most of the plugins arguments must
be defaulted.  The latter method allows for
complete plugin argument specification.</p>
<h2 id="_annotationtransformer_"><em>AnnotationTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-commonannotations">field name: <code>commonAnnotations</code></h4>
<p>Adds annotions (non-identifying metadata) to add
all resources. Like labels, these are key value
pairs.</p>
<pre><code>commonAnnotations:
  oncallPager: 800-555-1212
</code></pre><h3 id="usage-via-plugin">Usage via plugin</h3>
<h4 id="arguments">Arguments</h4>
<blockquote>
<p>Annotations map[string]string</p>
<p>FieldSpecs  []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: AnnotationsTransformer
metadata:
  name: not-important-to-example
annotations:
  app: myApp
  greeting/morning: a string with blanks
fieldSpecs:
- path: metadata/annotations
  create: true
</code></pre></blockquote>
<h2 id="_configmapgenerator_"><em>ConfigMapGenerator</em></h2>
<h3 id="usage-via-kustomizationyaml-1">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-configmapgenerator">field name: <code>configMapGenerator</code></h4>
<p>Each entry in this list results in the creation of
one ConfigMap resource (it&rsquo;s a generator of n maps).</p>
<p>The example below creates three ConfigMaps. One with the names and contents of
the given files, one with key/value as data, and a third which sets an
annotation and label via <code>options</code> for that single ConfigMap.</p>
<p>Each configMapGenerator item accepts a parameter of
<code>behavior: [create|replace|merge]</code>.
This allows an overlay to modify or
replace an existing configMap from the parent.</p>
<p>Also, each entry has an <code>options</code> field, that has the
same subfields as the kustomization file&rsquo;s <code>generatorOptions</code> field.</p>
<p>This <code>options</code> field allows one to add labels and/or
annotations to the generated instance, or to individually
disable the name suffix hash for that instance.
Labels and annotations added here will not be overwritten
by the global options associated with the kustomization
file <code>generatorOptions</code> field.  However, due to how
booleans behave, if the global <code>generatorOptions</code> field
specifies <code>disableNameSuffixHash: true</code>, this will
trump any attempt to locally override it.</p>
<pre><code># These labels are added to all configmaps and secrets.
generatorOptions:
  labels:
    fruit: apple

configMapGenerator:
- name: my-java-server-props
  behavior: merge
  files:
  - application.properties
  - more.properties
- name: my-java-server-env-vars
  literals: 
  - JAVA_HOME=/opt/java/jdk
  - JAVA_TOOL_OPTIONS=-agentlib:hprof
  options:
    disableNameSuffixHash: true
    labels:
      pet: dog
- name: dashboards
  files:
  - mydashboard.json
  options:
    annotations:
      dashboard: &quot;1&quot;
    labels:
      app.kubernetes.io/name: &quot;app1&quot;
</code></pre><p>It is also possible to
<a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-the-key-to-use-when-creating-a-configmap-from-a-file">define a key</a>
to set a name different than the filename.</p>
<p>The example below creates a ConfigMap
with the name of file as <code>myFileName.ini</code>
while the <em>actual</em> filename from which the
configmap is created is <code>whatever.ini</code>.</p>
<pre><code>configMapGenerator:
- name: app-whatever
  files:
  - myFileName.ini=whatever.ini
</code></pre><h3 id="usage-via-plugin-1">Usage via plugin</h3>
<h4 id="arguments-1">Arguments</h4>
<blockquote>
<p><a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/configmapargs.go">types.ConfigMapArgs</a></p>
</blockquote>
<h4 id="example-1">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: ConfigMapGenerator
metadata:
  name: mymap
envs:
- devops.env
- uxteam.env
literals:
- FRUIT=apple
- VEGETABLE=carrot
</code></pre></blockquote>
<h2 id="_imagetagtransformer_"><em>ImageTagTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-2">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-images">field name: <code>images</code></h4>
<p>Images modify the name, tags and/or digest for images
without creating patches.  E.g. Given this
kubernetes Deployment fragment:</p>
<pre><code>containers:
- name: mypostgresdb
  image: postgres:8
- name: nginxapp
  image: nginx:1.7.9
- name: myapp
  image: my-demo-app:latest
- name: alpine-app
  image: alpine:3.7
</code></pre><p>one can change the <code>image</code> in the following ways:</p>
<ul>
<li><code>postgres:8</code> to <code>my-registry/my-postgres:v1</code>,</li>
<li>nginx tag <code>1.7.9</code> to <code>1.8.0</code>,</li>
<li>image name <code>my-demo-app</code> to <code>my-app</code>,</li>
<li>alpine&rsquo;s tag <code>3.7</code> to a digest value</li>
</ul>
<p>all with the following <em>kustomization</em>:</p>
<pre><code>images:
- name: postgres
  newName: my-registry/my-postgres
  newTag: v1
- name: nginx
  newTag: 1.8.0
- name: my-demo-app
  newName: my-app
- name: alpine
  digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
</code></pre><h3 id="usage-via-plugin-2">Usage via plugin</h3>
<h4 id="arguments-2">Arguments</h4>
<blockquote>
<p>ImageTag   <a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/image.go">image.Image</a></p>
<p>FieldSpecs []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example-2">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: ImageTagTransformer
metadata:
  name: not-important-to-example
imageTag:
  name: nginx
  newTag: v2
</code></pre></blockquote>
<h2 id="_labeltransformer_"><em>LabelTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-3">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-commonlabels">field name: <code>commonLabels</code></h4>
<p>Adds labels to all resources and selectors</p>
<pre><code>commonLabels:
  someName: someValue
  owner: alice
  app: bingo
</code></pre><h3 id="usage-via-plugin-3">Usage via plugin</h3>
<h4 id="arguments-3">Arguments</h4>
<blockquote>
<p>Labels  map[string]string</p>
<p>FieldSpecs []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example-3">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: LabelTransformer
metadata:
  name: not-important-to-example
labels:
  app: myApp
  env: production
fieldSpecs:
- path: metadata/labels
  create: true
</code></pre></blockquote>
<h2 id="_namespacetransformer_"><em>NamespaceTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-4">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-namespace">field name: <code>namespace</code></h4>
<p>Adds namespace to all resources</p>
<pre><code>namespace: my-namespace
</code></pre><h3 id="usage-via-plugin-4">Usage via plugin</h3>
<h4 id="arguments-4">Arguments</h4>
<blockquote>
<p><a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/objectmeta.go">types.ObjectMeta</a></p>
<p>FieldSpecs []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example-4">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
 kind: NamespaceTransformer
 metadata:
   name: not-important-to-example
   namespace: test
 fieldSpecs:
 - path: metadata/namespace
   create: true
 - path: subjects
   kind: RoleBinding
   group: rbac.authorization.k8s.io
 - path: subjects
   kind: ClusterRoleBinding
   group: rbac.authorization.k8s.io
</code></pre></blockquote>
<h2 id="_patchesjson6902_"><em>PatchesJson6902</em></h2>
<h3 id="usage-via-kustomizationyaml-5">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-patchesjson6902">field name: <code>patchesJson6902</code></h4>
<p>Each entry in this list should resolve to
a kubernetes object and a JSON patch that will be applied
to the object.
The JSON patch is documented at <a href="https://tools.ietf.org/html/rfc6902">https://tools.ietf.org/html/rfc6902</a></p>
<p>target field points to a kubernetes object within the same kustomization
by the object&rsquo;s group, version, kind, name and namespace.
path field is a relative file path of a JSON patch file.
The content in this patch file can be either in JSON format as</p>
<pre><code> [
   {&quot;op&quot;: &quot;add&quot;, &quot;path&quot;: &quot;/some/new/path&quot;, &quot;value&quot;: &quot;value&quot;},
   {&quot;op&quot;: &quot;replace&quot;, &quot;path&quot;: &quot;/some/existing/path&quot;, &quot;value&quot;: &quot;new value&quot;}
 ]
</code></pre><p>or in YAML format as</p>
<pre><code>- op: add
  path: /some/new/path
  value: value
- op: replace
  path: /some/existing/path
  value: new value
</code></pre><pre><code>patchesJson6902:
- target:
    version: v1
    kind: Deployment
    name: my-deployment
  path: add_init_container.yaml
- target:
    version: v1
    kind: Service
    name: my-service
  path: add_service_annotation.yaml
</code></pre><p>The patch content can be an inline string as well:</p>
<pre><code>patchesJson6902:
- target:
    version: v1
    kind: Deployment
    name: my-deployment
  patch: |-
    - op: add
      path: /some/new/path
      value: value
    - op: replace
      path: /some/existing/path
      value: &quot;new value&quot;
</code></pre><h3 id="usage-via-plugin-5">Usage via plugin</h3>
<h4 id="arguments-5">Arguments</h4>
<blockquote>
<p>Target <a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/patchtarget.go">types.PatchTarget</a></p>
<p>Path   string</p>
<p>JsonOp string</p>
</blockquote>
<h4 id="example-5">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: PatchJson6902Transformer
metadata:
  name: not-important-to-example
target:
  group: apps
  version: v1
  kind: Deployment
  name: my-deploy
path: jsonpatch.json
</code></pre></blockquote>
<h2 id="_patchesstrategicmerge_"><em>PatchesStrategicMerge</em></h2>
<h3 id="usage-via-kustomizationyaml-6">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-patchesstrategicmerge">field name: <code>patchesStrategicMerge</code></h4>
<p>Each entry in this list should be either a relative
file path or an inline content
resolving to a partial or complete resource
definition.</p>
<p>The names in these (possibly partial) resource
files must match names already loaded via the
<code>resources</code> field.  These entries are used to
<em>patch</em> (modify) the known resources.</p>
<p>Small patches that do one thing are best, e.g. modify
a memory request/limit, change an env var in a
ConfigMap, etc.  Small patches are easy to review and
easy to mix together in overlays.</p>
<pre><code>patchesStrategicMerge:
- service_port_8888.yaml
- deployment_increase_replicas.yaml
- deployment_increase_memory.yaml
</code></pre><p>The patch content can be a inline string as well.</p>
<pre><code>patchesStrategicMerge:
- |-
  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: nginx
  spec:
    template:
      spec:
        containers:
          - name: nginx
            image: nignx:latest
</code></pre><p>Note that kustomize does not support more than one patch
for the same object that contain a <em>delete</em> directive. To remove
several fields / slice elements from an object create a single
patch that performs all the needed deletions.</p>
<h3 id="usage-via-plugin-6">Usage via plugin</h3>
<h4 id="arguments-6">Arguments</h4>
<blockquote>
<p>Paths []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/patchstrategicmerge.go">types.PatchStrategicMerge</a></p>
<p>Patches string</p>
</blockquote>
<h4 id="example-6">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: PatchStrategicMergeTransformer
metadata:
  name: not-important-to-example
paths:
- patch.yaml
</code></pre></blockquote>
<h2 id="_patchtransformer_"><em>PatchTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-7">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-patches">field name: <code>patches</code></h4>
<p>Each entry in this list should resolve to an Patch
object, which includes a patch and a target selector.
The patch can be either a strategic merge patch or a
JSON patch. it can be either a patch file or an inline
string. The target selects
resources by group, version, kind, name, namespace,
labelSelector and annotationSelector. A resource
which matches all the specified fields is selected
to apply the patch.</p>
<pre><code>patches:
- path: patch.yaml
  target:
    group: apps
    version: v1
    kind: Deployment
    name: deploy.*
    labelSelector: &quot;env=dev&quot;
    annotationSelector: &quot;zone=west&quot;
- patch: |-
    - op: replace
      path: /some/existing/path
      value: new value
  target:
    kind: MyKind
    labelSelector: &quot;env=dev&quot;
</code></pre><p>The <code>name</code> and <code>namespace</code> fields of the patch target selector are
automatically anchored regular expressions. This means that the value <code>myapp</code>
is equivalent to <code>^myapp$</code>.</p>
<h3 id="usage-via-plugin-7">Usage via plugin</h3>
<h4 id="arguments-7">Arguments</h4>
<blockquote>
<p>Path string</p>
<p>Patch string</p>
<p>Target *<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/selector.go">types.Selector</a></p>
</blockquote>
<h4 id="example-7">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: PatchTransformer
metadata:
  name: not-important-to-example
patch: '[{&quot;op&quot;: &quot;replace&quot;, &quot;path&quot;: &quot;/spec/template/spec/containers/0/image&quot;, &quot;value&quot;: &quot;nginx:latest&quot;}]'
target:
  name: .*Deploy
  kind: Deployment
</code></pre></blockquote>
<h2 id="_prefixsuffixtransformer_"><em>PrefixSuffixTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-8">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-names-nameprefix-namesuffix">field names: <code>namePrefix</code>, <code>nameSuffix</code></h4>
<p>Prepends or postfixes the value to the names
of all resources.</p>
<p>E.g. a deployment named <code>wordpress</code> could
become <code>alices-wordpress</code> or  <code>wordpress-v2</code>
or <code>alices-wordpress-v2</code>.</p>
<pre><code>namePrefix: alices-
nameSuffix: -v2
</code></pre><p>The suffix is appended before the content hash if
the resource type is ConfigMap or Secret.</p>
<h3 id="usage-via-plugin-8">Usage via plugin</h3>
<h4 id="arguments-8">Arguments</h4>
<blockquote>
<p>Prefix     string</p>
<p>Suffix     string</p>
<p>FieldSpecs []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example-8">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: PrefixSuffixTransformer
metadata:
  name: not-important-to-example
prefix: baked-
suffix: -pie
fieldSpecs:
  - path: metadata/name
</code></pre></blockquote>
<h2 id="_replicacounttransformer_"><em>ReplicaCountTransformer</em></h2>
<h3 id="usage-via-kustomizationyaml-9">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-replicas">field name: <code>replicas</code></h4>
<p>Replicas modified the number of replicas for a resource.</p>
<p>E.g. Given this kubernetes Deployment fragment:</p>
<pre><code>kind: Deployment
metadata:
  name: deployment-name
spec:
  replicas: 3
</code></pre><p>one can change the number of replicas to 5
by adding the following to your kustomization:</p>
<pre><code>replicas:
- name: deployment-name
  count: 5
</code></pre><p>This field accepts a list, so many resources can
be modified at the same time.</p>
<p>As this declaration does not take in a <code>kind:</code> nor a <code>group:</code>
it will match any <code>group</code> and <code>kind</code> that has a matching name and
that is one of:</p>
<ul>
<li><code>Deployment</code></li>
<li><code>ReplicationController</code></li>
<li><code>ReplicaSet</code></li>
<li><code>StatefulSet</code></li>
</ul>
<p>For more complex use cases, revert to using a patch.</p>
<h3 id="usage-via-plugin-9">Usage via plugin</h3>
<h4 id="arguments-9">Arguments</h4>
<blockquote>
<p>Replica <a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/replica.go">types.Replica</a></p>
<p>FieldSpecs []<a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/fieldspec.go">config.FieldSpec</a></p>
</blockquote>
<h4 id="example-9">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: ReplicaCountTransformer
metadata:
  name: not-important-to-example
replica:
  name: myapp
  count: 23
fieldSpecs:
- path: spec/replicas
  create: true
  kind: Deployment
- path: spec/replicas
  create: true
  kind: ReplicationController
</code></pre></blockquote>
<h2 id="_secretgenerator_"><em>SecretGenerator</em></h2>
<h3 id="usage-via-kustomizationyaml-10">Usage via <code>kustomization.yaml</code></h3>
<h4 id="field-name-secretgenerator">field name: <code>secretGenerator</code></h4>
<p>Each entry in the argument list
results in the creation of
one Secret resource
(it&rsquo;s a generator of n secrets).</p>
<p>This works like the <code>configMapGenerator</code> field
described above.</p>
<pre><code>secretGenerator:
- name: app-tls
  files:
  - secret/tls.cert
  - secret/tls.key
  type: &quot;kubernetes.io/tls&quot;
- name: app-tls-namespaced
  # you can define a namespace to generate
  # a secret in, defaults to: &quot;default&quot;
  namespace: apps
  files:
  - tls.crt=catsecret/tls.cert
  - tls.key=secret/tls.key
  type: &quot;kubernetes.io/tls&quot;
- name: env_file_secret
  envs:
  - env.txt
  type: Opaque
- name: secret-with-annotation
  files:
  - app-config.yaml
  type: Opaque
  options:
    annotations:
      app_config: &quot;true&quot;
    labels:
      app.kubernetes.io/name: &quot;app2&quot;
</code></pre><h3 id="usage-via-plugin-10">Usage via plugin</h3>
<h4 id="arguments-10">Arguments</h4>
<blockquote>
<p><a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/objectmeta.go">types.ObjectMeta</a></p>
<p><a href="https://github.com/kubernetes-sigs/kustomize/tree/master/api/types/secretargs.go">types.SecretArgs</a></p>
</blockquote>
<h4 id="example-10">Example</h4>
<blockquote>
<pre><code>apiVersion: builtin
kind: SecretGenerator
metadata:
  name: my-secret
  namespace: whatever
behavior: merge
envs:
- a.env
- b.env
files:
- obscure=longsecret.txt
literals:
- FRUIT=apple
- VEGETABLE=carrot
</code></pre></blockquote>

	
	
	<div class="text-muted mt-5 pt-3 border-top">Last modified July 16, 2020: <a  href="https://github.com/kubernetes-sigs/kustomize/commit/f9ee578aed600136133c3232fff03029cdfc526e">Docs: Auto-fix markdownlint issues (f9ee578a)</a>
</div>
</div>


          </main>
        </div>
      </div>
      
<footer class="bg-dark py-5 row d-print-none">
  <div class="container-fluid mx-sm-5">
    <div class="row">
      <div class="col-6 col-sm-4 text-xs-center order-sm-2">
        
        
        
<ul class="list-inline mb-0">
  
  <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="User mailing list" aria-label="User mailing list">
    <a class="text-white" target="_blank" href="https://groups.google.com/forum/#!forum/kubernetes-sig-cli">
      <i class="fa fa-envelope"></i>
    </a>
  </li>
  
</ul>

        
        
      </div>
      <div class="col-6 col-sm-4 text-right text-xs-center order-sm-3">
        
        
        
<ul class="list-inline mb-0">
  
  <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title="GitHub" aria-label="GitHub">
    <a class="text-white" target="_blank" href="https://github.com/kubernetes-sigs/kustomize">
      <i class="fab fa-github"></i>
    </a>
  </li>
  
</ul>

        
        
      </div>
      <div class="col-12 col-sm-4 text-center py-2 order-sm-2">
        <small class="text-white">&copy; 2020 Kubernetes Authors All Rights Reserved</small>
        
	
		
	
      </div>
    </div>
  </div>
</footer>


    </div>
    
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>







<script src="/kustomize/js/main.min.35b203b3c2114e187f6e4bbf0903c511aaaac5535186321e3b5e364656b6de0c.js" integrity="sha256-NbIDs8IRThh/bku/CQPFEaqqxVNRhjIeO142Rla23gw=" crossorigin="anonymous"></script>



<script src="https://kubernetes-sigs.github.io/kustomize//js/asciinema-player.js"></script>


  </body>
</html>